//
//  NSMethodSignature+EXT.h
//  extobjc
//
//  Created by Justin Spahr-Summers on 2011-03-11.
//  Copyright (C) 2012 Justin Spahr-Summers.
//  Released under the MIT license.
//

#import <Foundation/Foundation.h>


/// 方法签名扩展
@interface NSMethodSignature (EXTExtensions)

/// 创建并且返回一个基于接收者的新的方法签名。但会携带给定类型的参数在索引处。如果索引大于当前的参数数量，那么这个行为将没有意义
/// @param type  给定的参数类型
/// @param index 对应的参数索引
- (NSMethodSignature *)methodSignatureByInsertingType:(const char *)type atArgumentIndex:(NSUInteger)index;

/// 返回Objective-C编码类型的方法签名，将包括返回类型和所有的参数，生成的字符串格式 匹配
/// method_getTypeEncoding() 并且适合传递给class_addMethod()和相似的函数
/// @return 对应类型的字符串
/// @note 返回的字符串会自动释放
- (const char *)typeEncoding;
@end
